package com.tju.ocean_ecology_website.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 活动详情响应DTO
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ActivityDetailResponseDTO {
    /**
     * 活动ID
     */
    private Long id;
    
    /**
     * 活动标题
     */
    private String title;
    
    /**
     * 活动描述
     */
    private String description;
    
    /**
     * 活动图片URL
     */
    private String image;
    
    /**
     * 组织ID
     */
    private Long organizationId;
    
    /**
     * 团队ID
     */
    private Long teamId;
    
    /**
     * 组织名称
     */
    private String organizationName;
    
    /**
     * 活动日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private Date date;
    
    /**
     * 活动结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private Date endDate;
    
    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private Date startTime;
    
    /**
     * 活动地点
     */
    private String location;
    
    /**
     * 详细地址
     */
    private String fullAddress;
    
    /**
     * 地点图片URL
     */
    private String locationImage;
    
    /**
     * 活动状态：0=未开始, 1=报名中, 2=进行中, 3=已结束, 4=已取消
     */
    private Integer status;
    
    /**
     * 审核状态：0=待审核, 1=已通过, 2=已拒绝
     */
    private Integer auditStatus;
    
    /**
     * 拒绝原因
     */
    private String rejectReason;
    
    /**
     * 最大参与人数
     */
    private Integer maxParticipants;
    
    /**
     * 当前参与人数
     */
    private Integer currentParticipants;
    
    /**
     * 活动时长(分钟)
     */
    private Integer duration;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private Date createTime;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    private Date updateTime;
    
    /**
     * 当前用户是否已报名参加
     */
    private Boolean isJoined;
    
    /**
     * 当前用户是否已提交反馈
     */
    private Boolean hasFeedback;
    
    /**
     * 活动安排
     */
    private List<ScheduleItem> schedule;
    
    /**
     * 注意事项
     */
    private List<String> notices;
    
    /**
     * 活动安排项
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ScheduleItem {
        /**
         * 时间
         */
        private String time;
        
        /**
         * 内容
         */
        private String content;
    }
}
